{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "87cc70e5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-07-05T07:22:57.274439Z",
     "iopub.status.busy": "2024-07-05T07:22:57.273965Z",
     "iopub.status.idle": "2024-07-05T07:23:02.732067Z",
     "shell.execute_reply": "2024-07-05T07:23:02.730500Z"
    },
    "papermill": {
     "duration": 5.470867,
     "end_time": "2024-07-05T07:23:02.735527",
     "exception": false,
     "start_time": "2024-07-05T07:22:57.264660",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pylab as plt\n",
    "from sklearn.base import clone\n",
    "from sklearn.linear_model import SGDRegressor\n",
    "from sklearn.metrics import mean_squared_error\n",
    "import lightgbm as lgb\n",
    "\n",
    "from tspiral.model_selection import TemporalSplit\n",
    "from tspiral.forecasting import ForecastingCascade\n",
    "\n",
    "from datasetsforecast.m3 import M3\n",
    "from datasetsforecast.m4 import M4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ebd35b32",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-07-05T07:23:02.752868Z",
     "iopub.status.busy": "2024-07-05T07:23:02.752067Z",
     "iopub.status.idle": "2024-07-05T07:24:55.274878Z",
     "shell.execute_reply": "2024-07-05T07:24:55.273381Z"
    },
    "papermill": {
     "duration": 112.535016,
     "end_time": "2024-07-05T07:24:55.277897",
     "exception": false,
     "start_time": "2024-07-05T07:23:02.742881",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "91.7MiB [00:02, 36.3MiB/s]\n",
      "7.94MiB [00:00, 31.4MiB/s]\n",
      "4.34MiB [00:00, 53.6MiB/s]                 \n",
      "100%|██████████| 3.56M/3.56M [00:00<00:00, 33.0MiB/s]\n",
      "100%|██████████| 1.76M/1.76M [00:00<00:00, 4.27MiB/s]\n",
      "/opt/conda/lib/python3.10/site-packages/datasetsforecast/m3.py:108: FutureWarning: 'M' is deprecated and will be removed in a future version, please use 'ME' instead.\n",
      "  freq = pd.tseries.frequencies.to_offset(class_group.freq)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "((167562, 3), (11246411, 3))"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### LOAD M3 AND M4 DATASETS ###\n",
    "\n",
    "df_m4, _, _ = M4.load(directory='./', group='Monthly')\n",
    "df_m3, _, _ = M3.load(directory='./', group='Monthly')\n",
    "\n",
    "df_m4['unique_id'] = df_m4['unique_id'].factorize()[0]\n",
    "df_m3['unique_id'] = df_m3['unique_id'].factorize()[0]\n",
    "\n",
    "df_m3.shape, df_m4.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "c71c82c3",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-07-05T07:24:55.303651Z",
     "iopub.status.busy": "2024-07-05T07:24:55.303177Z",
     "iopub.status.idle": "2024-07-05T07:26:43.595439Z",
     "shell.execute_reply": "2024-07-05T07:26:43.593521Z"
    },
    "papermill": {
     "duration": 108.309115,
     "end_time": "2024-07-05T07:26:43.598955",
     "exception": false,
     "start_time": "2024-07-05T07:24:55.289840",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "### INSTANTIATE MODELS AND FIT ###\n",
    "\n",
    "sgd = ForecastingCascade(\n",
    "    SGDRegressor(random_state=42),\n",
    "    lags=range(1,12+1),\n",
    "    groups=[0],\n",
    "    target_standardize=True,\n",
    ").fit(df_m4[['unique_id']], df_m4['y'])\n",
    "\n",
    "lgbm = ForecastingCascade(\n",
    "    lgb.LGBMRegressor(random_state=42, n_jobs=-1, verbose=0),\n",
    "    lags=range(1,12+1),\n",
    "    groups=[0],\n",
    "    target_standardize=True,\n",
    ").fit(df_m4[['unique_id']], df_m4['y'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "0a0c2590",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-07-05T07:26:43.625216Z",
     "iopub.status.busy": "2024-07-05T07:26:43.624688Z",
     "iopub.status.idle": "2024-07-05T07:29:07.997483Z",
     "shell.execute_reply": "2024-07-05T07:29:07.995858Z"
    },
    "papermill": {
     "duration": 144.400327,
     "end_time": "2024-07-05T07:29:08.011145",
     "exception": false,
     "start_time": "2024-07-05T07:26:43.610818",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(67116, 11)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### MAKE ROLLING FORECASTING AND STORE PREDICTIONS ###\n",
    "\n",
    "CV = TemporalSplit(4, test_size=12, gap=12)\n",
    "\n",
    "\n",
    "preds = []\n",
    "for i, (train_id, test_id) in enumerate(CV.split(df_m3['y'], None, df_m3['unique_id'])):\n",
    "    \n",
    "    preds.append(\n",
    "        df_m3.iloc[test_id].assign(\n",
    "            cv_fold=i+1,\n",
    "            lgbm_specific=clone(lgbm).fit(\n",
    "                df_m3[['unique_id']].iloc[train_id], \n",
    "                df_m3['y'].iloc[train_id]\n",
    "            ).predict(\n",
    "                X=df_m3[['unique_id']].iloc[test_id],\n",
    "                last_X=df_m3[['unique_id']].iloc[train_id],\n",
    "                last_y=df_m3['y'].iloc[train_id],\n",
    "            ),\n",
    "            lgbm_general=lgbm.predict(\n",
    "                X=df_m3[['unique_id']].iloc[test_id],\n",
    "                last_X=df_m3[['unique_id']].iloc[train_id],\n",
    "                last_y=df_m3['y'].iloc[train_id],\n",
    "            ),\n",
    "            sgd_specific=clone(sgd).fit(\n",
    "                df_m3[['unique_id']].iloc[train_id], \n",
    "                df_m3['y'].iloc[train_id]\n",
    "            ).predict(\n",
    "                X=df_m3[['unique_id']].iloc[test_id],\n",
    "                last_X=df_m3[['unique_id']].iloc[train_id],\n",
    "                last_y=df_m3['y'].iloc[train_id],\n",
    "            ),\n",
    "            sgd_general=sgd.predict(\n",
    "                X=df_m3[['unique_id']].iloc[test_id],\n",
    "                last_X=df_m3[['unique_id']].iloc[train_id],\n",
    "                last_y=df_m3['y'].iloc[train_id],\n",
    "            )\n",
    "        ).merge(\n",
    "            df_m3.iloc[train_id].groupby('unique_id').tail(12) \\\n",
    "                .groupby('unique_id', as_index=False)[['y']].mean(),\n",
    "            on='unique_id', how='left', suffixes=('', 'dummy_mean')\n",
    "        ).merge(\n",
    "            df_m3.iloc[train_id].groupby('unique_id').tail(12) \\\n",
    "                .assign(ds=lambda x: x['ds']+pd.DateOffset(months=12)),\n",
    "            on=['ds','unique_id'], how='left', suffixes=('', 'dummy_season_repeat')\n",
    "        ).merge(\n",
    "            df_m3.iloc[train_id].groupby('unique_id', as_index=False).last() \\\n",
    "                .drop(columns=['ds']),\n",
    "            on=['unique_id'], how='left', suffixes=('', 'dummy_repeat')\n",
    "        )\n",
    "    )\n",
    "    \n",
    "    \n",
    "preds = pd.concat(preds, axis=0, ignore_index=True).dropna()\n",
    "preds.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "08799042",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-07-05T07:29:08.037210Z",
     "iopub.status.busy": "2024-07-05T07:29:08.036628Z",
     "iopub.status.idle": "2024-07-05T07:29:08.124041Z",
     "shell.execute_reply": "2024-07-05T07:29:08.122332Z"
    },
    "papermill": {
     "duration": 0.104604,
     "end_time": "2024-07-05T07:29:08.127062",
     "exception": false,
     "start_time": "2024-07-05T07:29:08.022458",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ydummy_season_repeat</th>\n",
       "      <th>ydummy_repeat</th>\n",
       "      <th>lgbm_general</th>\n",
       "      <th>ydummy_mean</th>\n",
       "      <th>lgbm_specific</th>\n",
       "      <th>sgd_specific</th>\n",
       "      <th>sgd_general</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cv_fold</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1483.617058</td>\n",
       "      <td>1609.601274</td>\n",
       "      <td>1305.379854</td>\n",
       "      <td>1347.652872</td>\n",
       "      <td>1373.406338</td>\n",
       "      <td>1346.376614</td>\n",
       "      <td>1320.419168</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1420.007938</td>\n",
       "      <td>1600.511056</td>\n",
       "      <td>1309.212787</td>\n",
       "      <td>1390.613613</td>\n",
       "      <td>1367.405487</td>\n",
       "      <td>1325.857992</td>\n",
       "      <td>1284.701665</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1287.092985</td>\n",
       "      <td>1485.756749</td>\n",
       "      <td>1140.297097</td>\n",
       "      <td>1240.782918</td>\n",
       "      <td>1201.602438</td>\n",
       "      <td>1185.326402</td>\n",
       "      <td>1178.325751</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1342.508899</td>\n",
       "      <td>1548.844135</td>\n",
       "      <td>1220.852711</td>\n",
       "      <td>1301.568892</td>\n",
       "      <td>1228.548700</td>\n",
       "      <td>1236.369017</td>\n",
       "      <td>1250.711488</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         ydummy_season_repeat  ydummy_repeat  lgbm_general  ydummy_mean  \\\n",
       "cv_fold                                                                   \n",
       "1                 1483.617058    1609.601274   1305.379854  1347.652872   \n",
       "2                 1420.007938    1600.511056   1309.212787  1390.613613   \n",
       "3                 1287.092985    1485.756749   1140.297097  1240.782918   \n",
       "4                 1342.508899    1548.844135   1220.852711  1301.568892   \n",
       "\n",
       "         lgbm_specific  sgd_specific  sgd_general  \n",
       "cv_fold                                            \n",
       "1          1373.406338   1346.376614  1320.419168  \n",
       "2          1367.405487   1325.857992  1284.701665  \n",
       "3          1201.602438   1185.326402  1178.325751  \n",
       "4          1228.548700   1236.369017  1250.711488  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### CREATE SCORES DATAFRAMES ###\n",
    "\n",
    "df_scores = pd.concat([\n",
    "    preds.groupby('cv_fold')[['y',c]].apply(\n",
    "        lambda x: mean_squared_error(x['y'], x[c], squared=False)\n",
    "    ).to_frame(name=c)\n",
    "    for c in set(preds.columns).difference(set(df_m3.columns))\n",
    "    if c != 'cv_fold'\n",
    "], axis=1, ignore_index=False)\n",
    "\n",
    "df_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0b349e3f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-07-05T07:29:08.154117Z",
     "iopub.status.busy": "2024-07-05T07:29:08.153551Z",
     "iopub.status.idle": "2024-07-05T07:29:08.182755Z",
     "shell.execute_reply": "2024-07-05T07:29:08.181450Z"
    },
    "papermill": {
     "duration": 0.044985,
     "end_time": "2024-07-05T07:29:08.185287",
     "exception": false,
     "start_time": "2024-07-05T07:29:08.140302",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>lgbm_general</th>\n",
       "      <th>sgd_general</th>\n",
       "      <th>sgd_specific</th>\n",
       "      <th>lgbm_specific</th>\n",
       "      <th>ydummy_mean</th>\n",
       "      <th>ydummy_season_repeat</th>\n",
       "      <th>ydummy_repeat</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1243.935612</td>\n",
       "      <td>1258.539518</td>\n",
       "      <td>1273.482506</td>\n",
       "      <td>1292.740741</td>\n",
       "      <td>1320.154574</td>\n",
       "      <td>1383.306720</td>\n",
       "      <td>1561.178304</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>80.229393</td>\n",
       "      <td>60.577981</td>\n",
       "      <td>75.731218</td>\n",
       "      <td>90.385418</td>\n",
       "      <td>64.202596</td>\n",
       "      <td>86.276084</td>\n",
       "      <td>56.957271</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      lgbm_general  sgd_general  sgd_specific  lgbm_specific  ydummy_mean  \\\n",
       "mean   1243.935612  1258.539518   1273.482506    1292.740741  1320.154574   \n",
       "std      80.229393    60.577981     75.731218      90.385418    64.202596   \n",
       "\n",
       "      ydummy_season_repeat  ydummy_repeat  \n",
       "mean           1383.306720    1561.178304  \n",
       "std              86.276084      56.957271  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### GET STATISTICS FROM SCORES DATAFRAME ###\n",
    "\n",
    "scores = df_scores.agg(['mean','std']).T.sort_values(by=['mean']).T\n",
    "\n",
    "scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "b9d44d98",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-07-05T07:29:08.214102Z",
     "iopub.status.busy": "2024-07-05T07:29:08.213540Z",
     "iopub.status.idle": "2024-07-05T07:29:08.661071Z",
     "shell.execute_reply": "2024-07-05T07:29:08.659791Z"
    },
    "papermill": {
     "duration": 0.465896,
     "end_time": "2024-07-05T07:29:08.664026",
     "exception": false,
     "start_time": "2024-07-05T07:29:08.198130",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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MiQMTkREREQ6YnAiIiIi0hGDExEREZGOGJyIiIiIdMTgRERERKQjBiciIiIiHTE4EREREemIwYmIiIhIRwxORERERDpicCIiIiLSEYMTERERkY4YnIiIiIh0xOBEREREpCMGJyIiIiIdMTgRERER6YjBiYiIiEhHDE5EREREOmJwIiIiItIRgxMRERGRjhiciIiIiHTE4ERERESkIwYnIiIiIh0xOBERERHpiMGJiIiISEcMTkREREQ6YnAiIiIi0hGDExEREZGOGJyIiIiIdMTgRERERKQjBiciIiIiHTE4EREREekoWwWnKVOmQKVSYcCAAcqy+Ph49O3bF/nz54eVlRXatWuHyMhIrffdu3cPzZs3x2effYZChQohICAAycnJWVx7IiIiyu6yTXA6e/YsFi9ejCpVqmgtHzhwIHbu3IlNmzbh6NGjePToEdq2bausf/PmDZo3b47ExEScPHkSq1evxqpVqzB27Nis3gQiIiLK5rJFcIqNjUWXLl2wdOlS5MuXT1keHR2N5cuXY9asWWjUqBFcXV2xcuVKnDx5EqdOnQIA7Nu3D9euXcOvv/6KatWqwcfHBxMnTsTChQuRmJior00iIiKibChbBKe+ffuiefPm8PLy0loeHh6OpKQkreXly5dHsWLFEBYWBgAICwtD5cqVYW9vr5Tx9vZGTEwMrl69mu7fTEhIQExMjNYPERER5W7G+q7Af/n9999x/vx5nD179p11ERERMDU1ha2trdZye3t7REREKGU0Q1Pq+tR16QkMDMT48eM/sfZERESUkxh0j9P9+/fRv39/rFu3Dubm5ln6t0eMGIHo6Gjl5/79+1n694mIiMjwGHRwCg8Px5MnT1CjRg0YGxvD2NgYR48exbx582BsbAx7e3skJiYiKipK632RkZFwcHAAADg4OLxzl13q69QyaTEzM4O1tbXWDxEREeVuBh2cGjdujMuXL+PixYvKj5ubG7p06aL828TEBAcPHlTec/PmTdy7dw8eHh4AAA8PD1y+fBlPnjxRyuzfvx/W1taoUKFClm8TERERZV8GPcYpb968qFSpktYyS0tL5M+fX1nu7++PQYMGwc7ODtbW1vjhhx/g4eGB2rVrAwCaNGmCChUqoGvXrpg2bRoiIiIwevRo9O3bF2ZmZlm+TURERJR9GXRw0sXs2bNhZGSEdu3aISEhAd7e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w4cPYWxsnCFjnRicSIvm5YTTp09j9+7duHjxIl69eoUKFSogICAgzfCUE2m2xfz589GzZ080btwYO3bswIMHD1CwYEElPE2ZMgUhISG5YoD0l19+iVWrVimvVSoV4uPjcfv2beTLlw8A8ObNG2VdUlISLl68aNAn28wwZMgQ/Pnnn1rLnj59iri4OJQoUeKd8klJSVlUM8MmIti3bx/Kly+P1atXK/sSkNKmo0ePxrRp07Bs2TJERETosabZn+b5ytTUFObm5ti1axe2b9+Odu3aoUePHti2bRsSEhKU8/zjx48N8pyfen5JPWdXrVoVYWFh6NOnD65evYpRo0bh0aNHynoAWvvWh/4xIhHRvuw2fPhwKVeunBQqVEg+//xz6datm7x48UJERK5cuSLdunWTunXrypw5c/RU26wzfPhwKViwoIwaNUr8/PykXLlyEhAQILdv3xYRkSdPnkjdunXF2dlZwsLC9FzbzHXy5Ek5f/68JCQkiEjKtqdq1qyZuLu7K69TL7lcvXpVAgIC5O+//87ayurRzp07pW/fvu9cGti4caMULVpU/vnnHxFJaaPU427r1q2yZ8+eLK+roRozZoyoVCqZNGmSxMbGaq2bOXOmqFQqWb16tZ5ql/1pXhI9fPiwbNu2TY4ePap1md3Pz0+sra1lzZo1cvfuXWnZsqW0bNlSH9V9L81tefDggUREREhMTIyybM6cOeLp6Sn+/v7y6NEjERHx9/eXI0eOfNTfY3CidwQGBoqDg4McPXpURER++OEHsbCwkFatWsmzZ89EJCU8tWrVSr777rscPb5n7dq1UrJkSQkPDxcRkWPHjolKpZKyZctK//79lQ/Ax48fS69evZQxUDmRu7u7ODs7K9s4d+5cadeunZw/f15ERA4dOiTOzs7SsWNHEUk5mb18+VJ8fHzEy8tL6+SWk3l7e8v27duVdlq/fr0cO3ZMRERiYmLEwcFBOnTooPWeV69eScuWLWXSpElZXl99e99+MXjwYDExMZEVK1bIq1evtNatX78+w8as5DZvf0kuXLiwVKlSRUxNTeWHH35QjmkRkR49eoidnZ04OztL1apVJTExUR9VTpfm/jN+/Hjx9PQUe3t7+eabb2Tr1q3Kujlz5kjdunWlevXqUr9+fXFwcPjo/YfBibR2vHv37omnp6ds375dRET27t0rlpaW0q1b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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "### PLOT SCORES ###\n",
    "\n",
    "_ = scores.loc['mean'].plot.bar(yerr=scores.loc['std'], rot=45, ylabel='RMSE')"
   ]
  }
 ],
 "metadata": {
  "kaggle": {
   "accelerator": "none",
   "dataSources": [],
   "dockerImageVersionId": 30732,
   "isGpuEnabled": false,
   "isInternetEnabled": true,
   "language": "python",
   "sourceType": "notebook"
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.3"
  },
  "papermill": {
   "default_parameters": {},
   "duration": 398.410411,
   "end_time": "2024-07-05T07:29:10.308544",
   "environment_variables": {},
   "exception": null,
   "input_path": "__notebook__.ipynb",
   "output_path": "__notebook__.ipynb",
   "parameters": {},
   "start_time": "2024-07-05T07:22:31.898133",
   "version": "2.5.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
